// 测试JSON用法

#include <iostream>
#include <string>
#include<fstream>
#include<jsoncpp/json/json.h>

// 结构化数据
class Stu
{
public:
    void Debug()
    {
        std::cout << _name << std::endl;
        std::cout << _age << std::endl;
        std::cout << _weight << std::endl;
    }

public:
    std::string _name;
    int _age;
    double _weight;
};


int main()
{
    //Json进行反序列化
    
    //1. 读文件
    std::ifstream in("out.txt");
    char buffer[1024];
    in.read(buffer, sizeof(buffer));

    //2. 将字符串反序列化到万能对象Value里面
    std::string str = buffer;
    Json::Value root;
    Json::Reader reader;
    reader.parse(buffer, root);
    
    //3. 将root里面数据重新读回struct Stu zs去
    Stu zs;
    zs._name = root["name"].asString();
    zs._age = root["age"].asInt();
    zs._weight = root["weight"].asDouble();

    //4.查看一下
    zs.Debug();


    // //JSON进行序列化
    // Stu zs = {"张三", 18, 70};

    // //1. 将结构化数据存到万能对象Value
    // Json::Value root;
    // root["name"] = zs._name;
    // root["age"] = zs._age;
    // root["weight"] = zs._weight;
    
    // //2. 将Value对象里面数据序列化 ---StyledWriter/FastWriter
    // Json::StyledWriter writer;
    // //Json::FastWriter writer;
    // std::string str = writer.write(root);

    // //3. 写到文件out.txt里面
    // std::ofstream out("out.txt");
    // if(!out.is_open())
    // {
    //     std::cout<<"is_open error\n"<<std::endl;
    //     return 1;
    // }
    // out<<str;
    // out.close();
    return 0;
}